Skill
ইথেরিয়াম (Ethereum)

প্র্যাকটিস প্রোজেক্টস

Latest Technologies - ইথেরিয়াম (Ethereum) - NCTB BOOK

ব্লকচেইন এবং স্মার্ট কন্ট্রাক্ট ডেভেলপমেন্টের ক্ষেত্রে প্র্যাকটিস প্রোজেক্ট তৈরি করা ডেভেলপারদের জন্য অত্যন্ত কার্যকর, কারণ এটি তাদের বাস্তব অভিজ্ঞতা এবং কোডিং দক্ষতা বাড়ায়। প্র্যাকটিস প্রোজেক্টের মাধ্যমে ডেভেলপাররা স্মার্ট কন্ট্রাক্ট, dApps, এবং ব্লকচেইন প্রযুক্তির মৌলিক ধারণা এবং বাস্তবায়ন শিখতে পারে। নিচে কিছু প্র্যাকটিস প্রোজেক্ট এবং তাদের বিশদ বিবরণ দেওয়া হলো, যা ব্লকচেইন ডেভেলপমেন্ট শিখতে সহায়ক।

১. Simple Storage dApp

  • বিবরণ: একটি Basic Solidity স্মার্ট কন্ট্রাক্ট তৈরি করুন যা একটি সংখ্যা স্টোর করে এবং তা রিট্রিভ করে। এটি Solidity এবং স্মার্ট কন্ট্রাক্টের মৌলিক ধারণা বোঝার জন্য একটি আদর্শ প্র্যাকটিস প্রোজেক্ট।
  • ফিচার:
    • ব্যবহারকারী একটি সংখ্যা সংরক্ষণ করতে এবং সেই সংখ্যা দেখতে পারবে।
    • Remix IDE ব্যবহার করে কন্ট্রাক্ট কম্পাইল এবং ডেপ্লয় করা।
  • ব্যবহারযোগ্য টুলস: Remix IDE, Solidity

২. Decentralized To-Do List Application

  • বিবরণ: একটি Decentralized To-Do List dApp তৈরি করুন, যেখানে ব্যবহারকারী তাদের টাস্ক লিস্ট সংরক্ষণ এবং ম্যানেজ করতে পারবে। এটি স্মার্ট কন্ট্রাক্ট এবং ফ্রন্ট-এন্ড ইন্টিগ্রেশন শেখার জন্য একটি চমৎকার প্রোজেক্ট।
  • ফিচার:
    • ব্যবহারকারী টাস্ক যোগ করতে, সম্পন্ন করতে এবং মুছে ফেলতে পারবে।
    • স্মার্ট কন্ট্রাক্টের মাধ্যমে টাস্কের তথ্য ব্লকচেইনে সংরক্ষণ হবে।
  • ব্যবহারযোগ্য টুলস: Solidity, Truffle, Web3.js, MetaMask, React.js

৩. Simple Token (ERC-20) Implementation

  • বিবরণ: একটি ERC-20 কমপ্লায়েন্ট টোকেন তৈরি করুন, যা Ethereum নেটওয়ার্কে ট্রান্সফার এবং ম্যানেজ করা যায়। এটি ERC-20 স্ট্যান্ডার্ড এবং টোকেন ডেভেলপমেন্ট শেখার জন্য একটি মৌলিক প্রোজেক্ট।
  • ফিচার:
    • ERC-20 স্ট্যান্ডার্ড অনুযায়ী টোকেন মিন্ট এবং বার্ন করা।
    • টোকেন ব্যালেন্স চেক করা এবং ট্রান্সফার করার ফাংশন তৈরি করা।
  • ব্যবহারযোগ্য টুলস: Solidity, Remix IDE, MetaMask

৪. Decentralized Voting System

  • বিবরণ: একটি Decentralized Voting System তৈরি করুন, যেখানে ব্যবহারকারীরা বিভিন্ন প্রার্থী বা অপশনে ভোট দিতে পারে। এটি স্মার্ট কন্ট্রাক্টের মাধ্যমে ট্রাস্টলেস ভোটিং এবং ব্লকচেইনে ডেটা রেকর্ডিং শেখার জন্য উপযুক্ত।
  • ফিচার:
    • ভোটারদের ভোট দেওয়ার সুবিধা।
    • ভোটের ফলাফল ব্লকচেইনে রেকর্ড হবে এবং তা সবার জন্য উন্মুক্ত থাকবে।
  • ব্যবহারযোগ্য টুলস: Solidity, Truffle, Ganache, React.js, MetaMask

৫. Crowdfunding Platform dApp

  • বিবরণ: একটি Crowdfunding dApp তৈরি করুন, যেখানে ব্যবহারকারীরা তাদের প্রজেক্টের জন্য তহবিল সংগ্রহ করতে পারে এবং অন্যান্য ব্যবহারকারীরা সেই প্রজেক্টে অর্থ দান করতে পারে। এটি স্মার্ট কন্ট্রাক্টের মাধ্যমে তহবিল ম্যানেজমেন্ট শেখার জন্য একটি উন্নত প্রোজেক্ট।
  • ফিচার:
    • প্রজেক্ট তৈরি করা এবং ফান্ড রেইজ করার জন্য ব্যবহারকারীদের ইন্টারফেস।
    • ফান্ডিং টার্গেট পূরণ হলে বা সময় শেষ হলে ফান্ড বিতরণ বা রিফান্ড।
  • ব্যবহারযোগ্য টুলস: Solidity, Truffle, Ganache, Web3.js, React.js

৬. NFT (Non-Fungible Token) Marketplace

  • বিবরণ: একটি NFT মার্কেটপ্লেস তৈরি করুন, যেখানে ব্যবহারকারীরা তাদের ডিজিটাল আর্টওয়ার্ক বা অ্যাসেট NFT হিসেবে মুদ্রণ (মিন্ট), বিক্রি, এবং ট্রেড করতে পারবে। এটি ERC-721 টোকেন এবং NFT ডেভেলপমেন্ট শেখার জন্য একটি চমৎকার প্রোজেক্ট।
  • ফিচার:
    • ব্যবহারকারীরা NFT মিন্ট করতে এবং তার জন্য প্রাইস সেট করতে পারবে।
    • অন্যান্য ব্যবহারকারীরা সেই NFT কিনতে এবং নিজেদের কালেকশনে যোগ করতে পারবে।
  • ব্যবহারযোগ্য টুলস: Solidity, OpenZeppelin ERC-721 লাইব্রেরি, Truffle, React.js, Web3.js

৭. Decentralized Exchange (DEX)

  • বিবরণ: একটি Basic Decentralized Exchange (DEX) তৈরি করুন, যেখানে ব্যবহারকারীরা ERC-20 টোকেন একে অপরের সাথে ট্রেড করতে পারে। এটি DEX-এর কাজের প্রক্রিয়া এবং Automated Market Maker (AMM) শেখার জন্য একটি উন্নত প্রোজেক্ট।
  • ফিচার:
    • ERC-20 টোকেন লিস্টিং এবং ট্রেডিংয়ের ব্যবস্থা।
    • Liquidity Pools এবং Swap ফাংশন তৈরি।
  • ব্যবহারযোগ্য টুলস: Solidity, Uniswap V2 লাইব্রেরি, Truffle, Web3.js, MetaMask

৮. Ethereum Wallet Implementation

  • বিবরণ: একটি Ethereum Wallet তৈরি করুন, যেখানে ব্যবহারকারীরা তাদের ETH এবং ERC-20 টোকেন স্টোর এবং ট্রান্সফার করতে পারবে। এটি ব্লকচেইন ইন্টারঅ্যাকশন এবং ফ্রন্ট-এন্ড ডেভেলপমেন্ট শেখার জন্য উপযুক্ত।
  • ফিচার:
    • ব্যবহারকারীরা তাদের অ্যাকাউন্টের ব্যালেন্স দেখতে পারবে।
    • ETH এবং ERC-20 টোকেন ট্রান্সফার করা যাবে।
  • ব্যবহারযোগ্য টুলস: Solidity, Ethers.js, React.js, MetaMask

৯. Lottery dApp

  • বিবরণ: একটি Lottery dApp তৈরি করুন, যেখানে ব্যবহারকারীরা একটি লটারি সিস্টেমে অংশগ্রহণ করতে পারবে এবং একটি নির্দিষ্ট সময় পরে লটারি বিজয়ী নির্ধারণ করা হবে। এটি র্যান্ডমাইজেশন এবং তহবিল ম্যানেজমেন্ট শেখার জন্য একটি ভালো প্রোজেক্ট।
  • ফিচার:
    • ব্যবহারকারীরা একটি নির্দিষ্ট পরিমাণ ETH দিয়ে লটারিতে অংশগ্রহণ করতে পারবে।
    • নির্দিষ্ট সময় পর স্মার্ট কন্ট্রাক্ট একটি বিজয়ী নির্ধারণ করবে এবং ফান্ড ট্রান্সফার করবে।
  • ব্যবহারযোগ্য টুলস: Solidity, Chainlink VRF (Randomness), Truffle, Web3.js

১০. Decentralized Identity Management System

  • বিবরণ: একটি Decentralized Identity Management System তৈরি করুন, যেখানে ব্যবহারকারীরা তাদের ব্যক্তিগত তথ্য ব্লকচেইনে সংরক্ষণ করতে এবং যাচাই করতে পারবে। এটি ডেটা প্রাইভেসি এবং ব্লকচেইনে ডেটা স্টোরেজ শেখার জন্য উপযুক্ত।
  • ফিচার:
    • ব্যবহারকারীরা তাদের পরিচয় সংক্রান্ত তথ্য ব্লকচেইনে সংরক্ষণ করতে পারবে।
    • তৃতীয় পক্ষ সেই তথ্য যাচাই করতে পারবে, তবে ব্যবহারকারীর অনুমতি ছাড়া অ্যাক্সেস করতে পারবে না।
  • ব্যবহারযোগ্য টুলস: Solidity, IPFS (InterPlanetary File System), Web3.js, React.js

উপসংহার

এই প্র্যাকটিস প্রোজেক্টগুলো ডেভেলপারদের জন্য ব্লকচেইন এবং স্মার্ট কন্ট্রাক্ট ডেভেলপমেন্টের বিভিন্ন দিক শেখার এবং তাদের দক্ষতা বাড়ানোর জন্য কার্যকর। প্রতিটি প্রোজেক্ট ডেভেলপারদের স্মার্ট কন্ট্রাক্টের মৌলিক ধারণা, ফ্রন্ট-এন্ড ইন্টিগ্রেশন, এবং ব্লকচেইন নিরাপত্তার বিভিন্ন দিক শেখার সুযোগ দেয়। এসব প্রোজেক্টের মাধ্যমে ডেভেলপাররা dApps এবং DeFi প্রোজেক্ট ডেভেলপমেন্টের ক্ষেত্রে তাদের দক্ষতা আরও উন্নত করতে পারবে।

Content added By

Solidity ব্যবহার করে একটি Basic Smart Contract তৈরি করা

Solidity ব্যবহার করে একটি Basic Smart Contract তৈরি করা অনেক সহজ এবং Ethereum ব্লকচেইনের জন্য এটি আদর্শ প্রোগ্রামিং ভাষা। Solidity দিয়ে আপনি স্মার্ট কন্ট্রাক্ট তৈরি করতে পারবেন, যা Ethereum ব্লকচেইনে ডেপ্লয় করা যাবে। নিচে একটি Basic Smart Contract এর উদাহরণ দেয়া হলো, যা একটি সাধারণ স্টোরেজ কন্ট্রাক্ট হিসেবে কাজ করবে। এই কন্ট্রাক্টের মাধ্যমে আপনি একটি ভ্যালু স্টোর করতে এবং রিট্রিভ করতে পারবেন।

Solidity দিয়ে Basic Smart Contract: SimpleStorage

// Solidity ভার্সন নির্ধারণ করা
pragma solidity ^0.8.0;

// কন্ট্রাক্টের নাম SimpleStorage
contract SimpleStorage {
    // একটি private state variable সংরক্ষণ করা, যা শুধুমাত্র কন্ট্রাক্টের মাধ্যমে অ্যাক্সেস করা যাবে
    uint private storedData;

    // একটি function যা ভ্যালু স্টোর করবে
    function set(uint x) public {
        storedData = x;
    }

    // একটি function যা স্টোর করা ভ্যালু রিটার্ন করবে
    function get() public view returns (uint) {
        return storedData;
    }
}

কন্ট্রাক্টের বিস্তারিত ব্যাখ্যা

Solidity ভার্সন নির্ধারণ:

pragma solidity ^0.8.0;

এই লাইনটি Solidity কম্পাইলারকে বলে যে, এই কন্ট্রাক্টটি Solidity-এর 0.8.0 বা তার পরবর্তী ভার্সনে কম্পাইল করতে হবে। এটি একটি ভালো প্র্যাকটিস যাতে সুনির্দিষ্ট ভার্সনে কন্ট্রাক্টটি কাজ করতে পারে এবং ভার্সন-স্পেসিফিক বাগ এড়ানো যায়।

কন্ট্রাক্ট ডিক্লেয়ারেশন:

contract SimpleStorage {

এখানে, SimpleStorage নামে একটি স্মার্ট কন্ট্রাক্ট তৈরি করা হয়েছে। কন্ট্রাক্টের মধ্যে আমরা ভ্যারিয়েবল এবং ফাংশনগুলো সংজ্ঞায়িত করবো।

স্টেট ভ্যারিয়েবল:

storedData হলো একটি uint টাইপের প্রাইভেট স্টেট ভ্যারিয়েবল, যা কন্ট্রাক্টে একটি সংখ্যা সংরক্ষণ করবে। প্রাইভেট হওয়ার কারণে, এটি কেবলমাত্র এই কন্ট্রাক্টের মাধ্যমে অ্যাক্সেস করা যাবে এবং বাইরের কোনো অ্যাকাউন্ট বা কন্ট্রাক্ট এটি সরাসরি অ্যাক্সেস করতে পারবে না।

set ফাংশন:

function set(uint x) public {
   storedData = x;
}

set ফাংশনটি পাবলিক এবং এটি একটি uint মান ইনপুট হিসেবে নেয়। এই ফাংশনটি ব্যবহার করে storedData ভ্যারিয়েবলে একটি নতুন মান সেট করা যায়।

get ফাংশন:

function get() public view returns (uint) {
   return storedData;
}

get ফাংশনটি পাবলিক এবং এটি একটি view ফাংশন, যার মানে হলো এটি শুধুমাত্র ডেটা রিড করে, পরিবর্তন করে না। এটি storedData ভ্যারিয়েবলে সংরক্ষিত মান রিটার্ন করে।

কন্ট্রাক্ট কম্পাইল এবং ডেপ্লয় করা

এই কন্ট্রাক্টটি Solidity কম্পাইলার ব্যবহার করে কম্পাইল করা যায় এবং তারপর Ethereum Virtual Machine (EVM)-এ ডেপ্লয় করা যায়। নিচে কন্ট্রাক্ট ডেপ্লয় এবং ব্যবহার করার ধাপগুলো দেয়া হলো:

  1. Remix IDE ব্যবহার করে কম্পাইল করা:
    • Remix IDE একটি জনপ্রিয় Solidity IDE, যা সরাসরি ব্রাউজারে চালানো যায়।
    • Remix-এ কন্ট্রাক্টটি পেস্ট করে কম্পাইল বাটনে ক্লিক করুন।
  2. কন্ট্রাক্ট ডেপ্লয় করা:
    • Remix-এ Deploy বাটন ক্লিক করে কন্ট্রাক্টটি ডেপ্লয় করুন। আপনি Ethereum-এর টেস্টনেট (যেমন Ropsten, Kovan) বা স্থানীয় নেটওয়ার্ক ব্যবহার করতে পারেন।
  3. কন্ট্রাক্ট ইন্টারঅ্যাক্ট করা:
    • ডেপ্লয় হওয়ার পর, আপনি set এবং get ফাংশনগুলো ব্যবহার করে কন্ট্রাক্টের সাথে ইন্টারঅ্যাক্ট করতে পারেন।
    • set ফাংশনের মাধ্যমে একটি মান ইনপুট দিন এবং get ফাংশন ব্যবহার করে সেই মানটি রিড করুন।

Solidity Smart Contract-এর মূল পয়েন্টস

  • Solidity স্মার্ট কন্ট্রাক্টগুলো Ethereum ব্লকচেইনে স্বয়ংক্রিয়ভাবে এক্সিকিউট হয়, যা সুরক্ষিত এবং পরিবর্তনশীল নয়।
  • প্রতিটি স্মার্ট কন্ট্রাক্টের ফাংশন Ethereum নেটওয়ার্কে একটি ট্রানজেকশন হিসেবে রেকর্ড হয়।
  • view বা pure ফাংশনগুলো শুধুমাত্র ডেটা রিড বা ক্যালকুলেশন করে এবং গ্যাস খরচ হয় না। তবে set বা অন্যান্য স্টেট-মডিফাইং ফাংশনগুলোতে গ্যাস ফি প্রয়োজন হয়।

কন্ট্রাক্ট এক্সটেনশন

আপনি কন্ট্রাক্টটিতে আরও ফাংশন যুক্ত করতে পারেন, যেমন:

  • কন্ট্রাক্টে একটি মালিক (Owner) নির্ধারণ করা এবং শুধুমাত্র মালিকের অনুমোদনে ভ্যালু পরিবর্তনের সুযোগ দেওয়া।
  • event যোগ করা, যা কন্ট্রাক্টের পরিবর্তন সম্পর্কে ব্যবহারকারীদের অবহিত করতে সাহায্য করে।
// মালিক সংরক্ষণের জন্য স্টেট ভ্যারিয়েবল
address public owner;

// কন্ট্রাক্ট ডিপ্লয় করার সময় মালিক সেট করা হচ্ছে
constructor() {
    owner = msg.sender;
}

// শুধুমাত্র মালিক স্টোরেজ আপডেট করতে পারবে
function set(uint x) public {
    require(msg.sender == owner, "Only the owner can set the value");
    storedData = x;
}

সারসংক্ষেপ

Solidity ব্যবহার করে একটি Basic Smart Contract তৈরি করা সহজ এবং এটি Ethereum ব্লকচেইনে স্মার্ট কন্ট্রাক্ট ডেভেলপমেন্টের জন্য প্রথম ধাপ। এই Basic Smart Contract-এর মাধ্যমে আপনি Solidity-এর মৌলিক ধারণাগুলো শিখতে পারবেন এবং ভবিষ্যতে আরও জটিল এবং উদ্ভাবনী কন্ট্রাক্ট তৈরি করতে সক্ষম হবেন।

Content added By

Ethereum Testnet ব্যবহার করে একটি Transaction করা

Ethereum Testnet ব্যবহার করে একটি ট্রানজেকশন করা Ethereum-এর মূল নেটওয়ার্কে (Mainnet) যাওয়ার আগে স্মার্ট কন্ট্রাক্ট ডেভেলপমেন্ট এবং ট্রানজেকশন টেস্টিং করার একটি নিরাপদ এবং কম খরচে উপায়। Testnet হলো Ethereum-এর একটি পরীক্ষামূলক নেটওয়ার্ক, যা মূল নেটওয়ার্কের মতোই কাজ করে কিন্তু এখানে Ether (ETH) ফ্রি এবং এর কোনো প্রকৃত মূল্য নেই। Ropsten, Rinkeby, Goerli, এবং Sepolia হলো Ethereum-এর কিছু জনপ্রিয় Testnet।

Ethereum Testnet ব্যবহার করে একটি ট্রানজেকশন করার ধাপ

Ethereum Testnet-এ একটি ট্রানজেকশন করার জন্য নিচের ধাপগুলো অনুসরণ করতে হবে:

ধাপ ১: একটি Ethereum Wallet সেট আপ করা

Testnet-এ ট্রানজেকশন করার জন্য আপনার একটি Ethereum Wallet প্রয়োজন হবে। MetaMask হলো একটি জনপ্রিয় Ethereum Wallet, যা Chrome, Firefox, এবং অন্যান্য ব্রাউজারে এক্সটেনশন হিসেবে ব্যবহার করা যায়।

  1. MetaMask ইনস্টল করা:
    • MetaMask এর অফিসিয়াল ওয়েবসাইটে যান এবং আপনার ব্রাউজারে ইনস্টল করুন।
  2. নতুন ওয়ালেট তৈরি করা:
    • MetaMask খুলে নতুন ওয়ালেট তৈরি করুন বা আপনার পূর্বের ওয়ালেট রিস্টোর করুন।
    • MetaMask আপনার জন্য একটি Seed Phrase প্রদান করবে, এটি সংরক্ষণ করুন এবং নিরাপদে রাখুন।

ধাপ ২: Testnet নির্বাচন করা

Ethereum-এর বিভিন্ন Testnet রয়েছে, যেমন Ropsten, Goerli, Rinkeby, এবং Sepolia। MetaMask-এ Testnet নেটওয়ার্ক নির্বাচন করতে নিচের ধাপগুলো অনুসরণ করুন:

  1. MetaMask খুলুন এবং উপরের ডান দিকে থাকা নেটওয়ার্ক বাটনে ক্লিক করুন।
  2. ড্রপডাউন মেনু থেকে আপনার পছন্দের Testnet (যেমন, Goerli Test Network) নির্বাচন করুন।

ধাপ ৩: Testnet Faucet ব্যবহার করে ফ্রি ETH সংগ্রহ করা

Testnet-এ ট্রানজেকশন করতে আপনার ফ্রি ETH প্রয়োজন হবে, যা আপনি Faucet-এর মাধ্যমে সংগ্রহ করতে পারেন।

  1. Goerli Faucet ব্যবহার করতে Goerli Faucet এ যান।
  2. আপনার MetaMask Wallet থেকে Goerli Testnet এ থাকা Ethereum ঠিকানাটি কপি করুন।
  3. Faucet-এর ইনপুট ফিল্ডে Ethereum ঠিকানাটি পেস্ট করুন এবং প্রয়োজনীয় ETH রিকোয়েস্ট করুন।
  4. কয়েক মিনিটের মধ্যে আপনার ওয়ালেট ঠিকানায় Testnet ETH জমা হবে।

ধাপ ৪: একটি ট্রানজেকশন তৈরি করা এবং পাঠানো

Testnet-এ একটি ট্রানজেকশন পাঠানোর জন্য নিচের ধাপগুলো অনুসরণ করুন:

  1. MetaMask খুলুন এবং Send বাটনে ক্লিক করুন।
  2. Recipient Address ফিল্ডে আপনি যাকে ETH পাঠাতে চান তার Testnet ঠিকানা লিখুন।
    • আপনি যদি আপনার নিজস্ব ঠিকানায় পাঠাতে চান, তাহলে আপনার অন্য একটি MetaMask ঠিকানা ব্যবহার করতে পারেন।
  3. Amount ফিল্ডে আপনি কত ETH পাঠাতে চান তা লিখুন (যেমন, 0.1 ETH)।
  4. Transaction Fee (Gas Fee) এবং Gas Limit MetaMask স্বয়ংক্রিয়ভাবে নির্ধারণ করবে, তবে আপনি চাইলে তা কাস্টমাইজ করতে পারেন।
  5. সব কিছু ঠিক থাকলে Next বাটনে ক্লিক করুন এবং তারপর Confirm বাটন ক্লিক করে ট্রানজেকশন সম্পন্ন করুন।

ধাপ ৫: ট্রানজেকশনের স্টেটাস যাচাই করা

Ethereum Testnet-এ ট্রানজেকশন সম্পন্ন হওয়ার পরে আপনি ট্রানজেকশনের স্টেটাস যাচাই করতে পারেন।

Etherscan Testnet Explorer ব্যবহার করুন:

  • Testnet Etherscan (যেমন, Goerli Etherscan) এ যান।
  • MetaMask থেকে আপনার ওয়ালেট ঠিকানাটি কপি করুন এবং Etherscan-এর সার্চ বারে পেস্ট করে সার্চ করুন।
  • আপনি আপনার ট্রানজেকশন ইতিহাস এবং স্টেটাস দেখতে পাবেন।

MetaMask-এ ট্রানজেকশন চেক করুন:

  • MetaMask-এ Activity ট্যাবে যান এবং আপনার সর্বশেষ ট্রানজেকশনের স্টেটাস দেখতে পাবেন।

উদাহরণ: Solidity কন্ট্রাক্ট ডেপ্লয় করা এবং Testnet-এ ট্রানজেকশন করা

Testnet-এ একটি SimpleStorage কন্ট্রাক্ট ডেপ্লয় এবং ট্রানজেকশন করা যেতে পারে। নিচে কিভাবে কন্ট্রাক্টটি Remix IDE এবং MetaMask ব্যবহার করে Testnet-এ ডেপ্লয় করা যায় তার ধাপ উল্লেখ করা হলো:

Remix IDE খুলুন:

  • Remix IDE এ যান এবং আপনার SimpleStorage কন্ট্রাক্ট পেস্ট করুন।

MetaMask এবং Remix যুক্ত করা:

  • Remix-এর Deploy & Run Transactions প্যানেলে যান।
  • ENVIRONMENT এর ড্রপডাউন থেকে Injected Web3 নির্বাচন করুন। এটি MetaMask-কে Remix-এর সাথে সংযুক্ত করবে।

কন্ট্রাক্ট কম্পাইল করুন:

  • Solidity ফাইলটি সিলেক্ট করুন এবং Compile বাটনে ক্লিক করে কন্ট্রাক্টটি কম্পাইল করুন।

Testnet নির্বাচন করুন এবং কন্ট্রাক্ট ডেপ্লয় করুন:

  • MetaMask-এর মাধ্যমে Goerli Testnet নির্বাচন করুন।
  • Deploy বাটনে ক্লিক করুন এবং MetaMask থেকে ট্রানজেকশন কনফার্ম করুন।

কন্ট্রাক্টের সাথে ইন্টারঅ্যাক্ট করা:

  • Remix-এ কন্ট্রাক্ট ডেপ্লয় করার পরে আপনি Remix-এর Deployed Contracts সেকশনে কন্ট্রাক্টের ফাংশন দেখতে পাবেন।
  • set ফাংশন কল করুন এবং একটি ভ্যালু ইনপুট দিন। MetaMask থেকে ট্রানজেকশন কনফার্ম করুন।
  • get ফাংশন কল করে ভ্যালুটি পড়ুন এবং যাচাই করুন।

সারসংক্ষেপ

Ethereum Testnet (যেমন Goerli) ব্যবহার করে একটি ট্রানজেকশন করা এবং স্মার্ট কন্ট্রাক্ট ডেপ্লয় করা নতুন ডেভেলপারদের জন্য একটি গুরুত্বপূর্ণ স্কিল। Testnet ব্যবহার করে ডেভেলপাররা Ethereum-এর মূল নেটওয়ার্কে যাওয়ার আগে তাদের কন্ট্রাক্ট এবং অ্যাপ্লিকেশনগুলো পরীক্ষা করতে পারে, যা তাদের খরচ এবং ঝুঁকি কমায়।

Content added By

একটি Decentralized Application (dApp) তৈরি

একটি Decentralized Application (dApp) তৈরি করতে হলে স্মার্ট কন্ট্রাক্ট ডেভেলপমেন্ট, ফ্রন্ট-এন্ড ডেভেলপমেন্ট, এবং ব্লকচেইনের সাথে ইন্টারঅ্যাকশন করতে সক্ষম একটি পূর্ণাঙ্গ অ্যাপ্লিকেশন তৈরি করতে হয়। dApp ডেভেলপমেন্টে আপনি স্মার্ট কন্ট্রাক্ট এবং ফ্রন্ট-এন্ড ইন্টিগ্রেশন শেখার সুযোগ পাবেন। নিচে একটি Basic dApp তৈরির ধাপগুলো এবং ব্যবহৃত টুলস নিয়ে আলোচনা করা হলো।

dApp-এর বিবরণ: Simple Storage Application

আমরা একটি Simple Storage dApp তৈরি করবো, যেখানে ব্যবহারকারীরা একটি সংখ্যা স্টোর করতে এবং তা রিট্রিভ করতে পারবে। এটি একটি বেসিক প্রোজেক্ট, তবে এটি Solidity, স্মার্ট কন্ট্রাক্ট ডেভেলপমেন্ট, এবং ব্লকচেইনের সাথে ফ্রন্ট-এন্ড ইন্টিগ্রেশন শেখার জন্য আদর্শ।

dApp তৈরির ধাপগুলো

১. স্মার্ট কন্ট্রাক্ট ডেভেলপমেন্ট
২. ফ্রন্ট-এন্ড ডেভেলপমেন্ট
৩. Ethereum নেটওয়ার্কে কন্ট্রাক্ট ডেপ্লয় করা
৪. ফ্রন্ট-এন্ড এবং স্মার্ট কন্ট্রাক্ট ইন্টিগ্রেশন

ধাপ ১: স্মার্ট কন্ট্রাক্ট ডেভেলপমেন্ট

Solidity ব্যবহার করে একটি Simple Storage স্মার্ট কন্ট্রাক্ট লিখুন। এই কন্ট্রাক্ট একটি সংখ্যা স্টোর এবং রিট্রিভ করার সুযোগ দেবে।

স্মার্ট কন্ট্রাক্ট কোড:

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract SimpleStorage {
    uint256 private storedNumber;

    // Store a number
    function set(uint256 _number) public {
        storedNumber = _number;
    }

    // Retrieve the stored number
    function get() public view returns (uint256) {
        return storedNumber;
    }
}

Remix IDE ব্যবহার করে কন্ট্রাক্ট ডেপ্লয় করা:

১. Remix IDE ওপেন করুন। ২. SimpleStorage.sol নামে একটি নতুন ফাইল তৈরি করুন এবং উপরের কোডটি পেস্ট করুন। 3. Solidity Compiler ট্যাবে যান এবং কন্ট্রাক্টটি কম্পাইল করুন। 4. Deploy & Run Transactions ট্যাবে যান এবং JavaScript VM নির্বাচন করুন। 5. "Deploy" বাটনে ক্লিক করে কন্ট্রাক্টটি ডেপ্লয় করুন।

ধাপ ২: ফ্রন্ট-এন্ড ডেভেলপমেন্ট

এখন আমরা আমাদের স্মার্ট কন্ট্রাক্টের সাথে ইন্টারঅ্যাক্ট করতে একটি ফ্রন্ট-এন্ড তৈরি করবো। আমরা React.js এবং Ethers.js লাইব্রেরি ব্যবহার করবো।

১. প্রোজেক্ট সেটআপ

npx create-react-app simple-storage-dapp
cd simple-storage-dapp
npm install ethers

২. App.js ফাইলের কোড:

import React, { useState } from "react";
import { ethers } from "ethers";
import SimpleStorage from "./artifacts/contracts/SimpleStorage.sol/SimpleStorage.json";

const simpleStorageAddress = "আপনার_ডেপ্লয়কৃত_কন্ট্রাক্টের_অ্যাড্রেস";

function App() {
  const [storedValue, setStoredValue] = useState("");
  const [inputValue, setInputValue] = useState("");

  // স্মার্ট কন্ট্রাক্টের সাথে কানেক্ট করতে
  async function requestAccount() {
    await window.ethereum.request({ method: "eth_requestAccounts" });
  }

  // get ফাংশন কল করে মান রিট্রিভ করতে
  async function fetchValue() {
    if (typeof window.ethereum !== "undefined") {
      const provider = new ethers.providers.Web3Provider(window.ethereum);
      const contract = new ethers.Contract(
        simpleStorageAddress,
        SimpleStorage.abi,
        provider
      );
      try {
        const data = await contract.get();
        setStoredValue(data.toString());
      } catch (err) {
        console.error("Error: ", err);
      }
    }
  }

  // set ফাংশন কল করে মান সংরক্ষণ করতে
  async function setValue() {
    if (!inputValue) return;
    if (typeof window.ethereum !== "undefined") {
      await requestAccount();
      const provider = new ethers.providers.Web3Provider(window.ethereum);
      const signer = provider.getSigner();
      const contract = new ethers.Contract(
        simpleStorageAddress,
        SimpleStorage.abi,
        signer
      );
      const transaction = await contract.set(inputValue);
      await transaction.wait();
      fetchValue();
    }
  }

  return (
    

Simple Storage dApp

Stored Value: {storedValue}

setInputValue(e.target.value)} />
); } export default App;

ধাপ ৩: Ethereum নেটওয়ার্কে কন্ট্রাক্ট ডেপ্লয় করা

ডেভেলপমেন্ট নেটওয়ার্কে স্মার্ট কন্ট্রাক্ট ডেপ্লয় করার জন্য Truffle বা Hardhat ব্যবহার করতে পারেন। উদাহরণস্বরূপ, আমরা Hardhat ব্যবহার করবো।

১. Hardhat প্রোজেক্ট সেটআপ

npm install --save-dev hardhat
npx hardhat

২. Hardhat কনফিগারেশন এবং ডেপ্লয়মেন্ট

Hardhat কনফিগারেশনে ডেভেলপমেন্ট নেটওয়ার্ক যোগ করুন এবং কন্ট্রাক্ট ডেপ্লয় করার জন্য একটি স্ক্রিপ্ট লিখুন।

// scripts/deploy.js
async function main() {
  const SimpleStorage = await ethers.getContractFactory("SimpleStorage");
  const simpleStorage = await SimpleStorage.deploy();
  await simpleStorage.deployed();
  console.log("SimpleStorage deployed to:", simpleStorage.address);
}

main()
  .then(() => process.exit(0))
  .catch((error) => {
    console.error(error);
    process.exit(1);
  });
npx hardhat run scripts/deploy.js --network localhost

ধাপ ৪: ফ্রন্ট-এন্ড এবং স্মার্ট কন্ট্রাক্ট ইন্টিগ্রেশন

React অ্যাপে Hardhat থেকে প্রাপ্ত কন্ট্রাক্ট অ্যাড্রেস এবং ABI (ডেপ্লয় করার পর পাওয়া) আপডেট করুন। এটি করার পর আপনি dApp-এর ফ্রন্ট-এন্ডের মাধ্যমে স্মার্ট কন্ট্রাক্টের সাথে ইন্টারঅ্যাক্ট করতে পারবেন।

উপসংহার

এই প্রোজেক্টের মাধ্যমে আপনি একটি Basic dApp তৈরি করতে এবং স্মার্ট কন্ট্রাক্ট, ফ্রন্ট-এন্ড ইন্টিগ্রেশন, এবং Ethereum নেটওয়ার্কে কন্ট্রাক্ট ডেপ্লয় করার প্রক্রিয়া শিখতে পারবেন। এটি একটি বেসিক প্রোজেক্ট হলেও, আপনি এই ভিত্তির ওপর ভিত্তি করে আরও জটিল dApp তৈরি করতে পারেন, যেমন DeFi, NFT মার্কেটপ্লেস, বা Decentralized Voting System।

Content added By

NFT Minting এবং ERC-721 Contract Deployment

NFT Minting এবং ERC-721 Contract Deployment করতে হলে Solidity স্মার্ট কন্ট্রাক্ট ডেভেলপমেন্ট, Ethereum নেটওয়ার্কে কন্ট্রাক্ট ডেপ্লয়মেন্ট, এবং NFT ম্যানেজমেন্ট প্রক্রিয়া সম্পর্কে ধারণা থাকা প্রয়োজন। নিচে একটি ERC-721 (NFT) কন্ট্রাক্ট তৈরির এবং NFT মিন্টিং করার প্রক্রিয়া নিয়ে বিস্তারিত আলোচনা করা হলো।

ধাপ ১: ERC-721 Contract Development

ERC-721 হলো Ethereum-এর একটি NFT স্ট্যান্ডার্ড, যা ইউনিক এবং Non-Fungible টোকেন তৈরি করতে ব্যবহৃত হয়। ERC-721 কন্ট্রাক্টের মাধ্যমে আপনি ইউনিক অ্যাসেট, ডিজিটাল আর্টওয়ার্ক, এবং অন্যান্য ক্লেক্টিবলস ব্লকচেইনে মুদ্রণ করতে পারেন।

প্রয়োজনীয় টুলস:

  • Solidity: স্মার্ট কন্ট্রাক্ট লিখতে।
  • Remix IDE: Solidity স্মার্ট কন্ট্রাক্ট লিখতে এবং ডেপ্লয় করতে।
  • MetaMask: Ethereum নেটওয়ার্কে কন্ট্রাক্ট ডেপ্লয় এবং ইন্টারঅ্যাক্ট করতে।

Solidity কোড:

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
import "@openzeppelin/contracts/access/Ownable.sol";

contract MyNFT is ERC721, Ownable {
    uint256 public tokenCounter;

    constructor() ERC721("MyNFT", "MNFT") {
        tokenCounter = 0;
    }

    function mintNFT(address recipient, string memory tokenURI) public onlyOwner returns (uint256) {
        uint256 newTokenId = tokenCounter;
        _safeMint(recipient, newTokenId);
        _setTokenURI(newTokenId, tokenURI);
        tokenCounter += 1;
        return newTokenId;
    }

    function _baseURI() internal view virtual override returns (string memory) {
        return "https://api.example.com/metadata/";
    }
}

কোডের বিবরণ:

ERC-721 এবং Ownable:

  • আমরা OpenZeppelin-এর ERC-721 লাইব্রেরি ব্যবহার করছি, যা ERC-721 স্ট্যান্ডার্ড অনুযায়ী কাজ করে।
  • Ownable মোডিফায়ার কন্ট্রাক্টের মালিক নির্ধারণ করে এবং শুধুমাত্র মালিককে NFT মিন্ট করার অনুমতি দেয়।

mintNFT ফাংশন:

  • mintNFT ফাংশনটি নতুন NFT টোকেন মিন্ট করে এবং সেটি একটি নির্দিষ্ট অ্যাড্রেসে প্রেরণ করে।
  • প্রতিটি টোকেনের জন্য একটি tokenURI সংযুক্ত করা হয়, যা NFT-এর মেটাডেটা নির্দেশ করে (যেমন ছবির লিংক, নাম, বিবরণ)।

ধাপ ২: Remix IDE-তে কন্ট্রাক্ট কম্পাইল এবং ডেপ্লয় করা

১. Remix IDE ওপেন করুন।
২. নতুন একটি ফাইল তৈরি করুন, MyNFT.sol নামে এবং উপরের কোডটি পেস্ট করুন।
৩. Solidity Compiler ট্যাবে যান এবং কন্ট্রাক্টটি কম্পাইল করুন।
৪. Deploy & Run Transactions ট্যাবে যান এবং Injected Web3 নির্বাচন করুন (MetaMask ব্রাউজার এক্সটেনশনটি ব্যবহার করে)।
৫. ডেপ্লয় বাটনে ক্লিক করে কন্ট্রাক্টটি Ethereum নেটওয়ার্কে ডেপ্লয় করুন।

নোট: আপনি ডেভেলপমেন্ট নেটওয়ার্ক (যেমন Ropsten বা Rinkeby) ব্যবহার করতে পারেন পরীক্ষার জন্য, কারণ এটি গ্যাস ফি ছাড়াই কাজ করতে সহায়ক।

ধাপ ৩: NFT Minting

এখন আমরা আমাদের কন্ট্রাক্টের মাধ্যমে একটি NFT মিন্ট করবো। Remix IDE-তে mintNFT ফাংশন কল করে এটি করা যাবে।

১. Deployed Contracts সেকশনে আপনার ডেপ্লয় করা কন্ট্রাক্টটি দেখুন।
২. mintNFT ফাংশন নির্বাচন করুন এবং প্রয়োজনীয় ইনপুট প্রদান করুন:

  • recipient: NFT যাকে দেওয়া হবে, সেই অ্যাড্রেস।
  • tokenURI: NFT-এর জন্য মেটাডেটা বা URI (যেমন "https://api.example.com/metadata/1.json")।
    ৩. Transact বাটনে ক্লিক করুন। MetaMask আপনার লেনদেন নিশ্চিত করতে বলবে।

ধাপ ৪: Token URI এবং মেটাডেটা সেট করা

প্রত্যেকটি NFT-এর জন্য একটি ইউনিক tokenURI সেট করা হয়, যা NFT-এর মেটাডেটা নির্দেশ করে। মেটাডেটা সাধারণত JSON ফরম্যাটে থাকে এবং এটি NFT-এর ছবির লিংক, নাম, এবং অন্যান্য বিবরণ নির্দেশ করে।

মেটাডেটার উদাহরণ (JSON ফাইল):

{
  "name": "My First NFT",
  "description": "This is my first NFT on the blockchain!",
  "image": "https://api.example.com/images/1.png",
  "attributes": [
    {
      "trait_type": "Background",
      "value": "Blue"
    },
    {
      "trait_type": "Rarity",
      "value": "Common"
    }
  ]
}

এই JSON ফাইলটি হোস্ট করতে আপনি IPFS (InterPlanetary File System) বা অন্য কোনো হোস্টিং সার্ভিস ব্যবহার করতে পারেন। JSON ফাইলটি হোস্ট করার পর তার URI (যেমন "https://ipfs.io/ipfs/Qm12345") tokenURI হিসেবে ব্যবহার করা হবে।

ধাপ ৫: ফ্রন্ট-এন্ড ইন্টিগ্রেশন (ঐচ্ছিক)

NFT মিন্টিং করার পর আপনি একটি ফ্রন্ট-এন্ড ইন্টারফেস তৈরি করতে পারেন, যেখানে ব্যবহারকারীরা তাদের NFT দেখতে এবং ম্যানেজ করতে পারবে। React.js এবং Ethers.js ব্যবহার করে আপনি একটি সম্পূর্ণ dApp তৈরি করতে পারেন।

উদাহরণ:

  • ব্যবহারকারীরা তাদের Ethereum অ্যাকাউন্ট দিয়ে লগ ইন করবে (MetaMask)।
  • তারা একটি ফর্ম ব্যবহার করে NFT মিন্ট করতে পারবে।
  • মেটাডেটা এবং ছবি প্রদর্শনের জন্য Ethers.js ব্যবহার করে ব্লকচেইন থেকে তথ্য রিট্রিভ করা হবে।

উপসংহার

NFT মিন্টিং এবং ERC-721 কন্ট্রাক্ট ডেপ্লয়মেন্ট একটি অত্যন্ত কার্যকরী প্রক্রিয়া, যা আপনাকে NFT ইকোসিস্টেমের মধ্যে কাজ করার সুযোগ দেয়। Solidity, Remix IDE, এবং MetaMask-এর সাহায্যে আপনি দ্রুত NFT কন্ট্রাক্ট তৈরি এবং ডেপ্লয় করতে পারবেন। আপনার জ্ঞান এবং দক্ষতা বাড়ানোর জন্য আপনি আরও জটিল ফিচার (যেমন রয়্যালটি পেমেন্ট, অটোমেটিক মার্কেটপ্লেস ইন্টিগ্রেশন) যুক্ত করতে পারেন।

Content added By
Promotion